﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Arrays_04._12
{
    class Program
    {
        static void Main(string[] args)
        {
            ReplaceWithAverageValueAfterMax();
        }
        static void MaximumArrayNumber()
        {
            int[] array = new int[5];
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("Введите элементы массива (5 шт.):");
                array[i] = Int32.Parse(Console.ReadLine());

            }
            int max = array[0];
            for (int i = 0; i < 5; i++)
            {
                if (array[i] > max)
                    max = array[i];
            }
            Console.WriteLine("Количество элементов в массиве: {0}", array.Length);
            Console.WriteLine("Максимальный элемент - {0}", max);
        }

        static void TaskTwo()
        {
            Console.WriteLine("Введите размер массива:");
            int arraySize = Int32.Parse(Console.ReadLine());
            int[] array = new int[arraySize];
            for (int i = 0; i < arraySize; i++)
            {
                Console.WriteLine("Введите элемент массива:");
                array[i] = Int32.Parse(Console.ReadLine());
            }
            int min = array[0];
            for (int i = 0; i < arraySize; i++)
            {
                if (array[i] < min)
                    min = array[i];
                else
                    continue;
            }
            for (int i = 0; i < arraySize; i++)
            {
                if (array[i] - 5 == min || array[i] + 5 == min)
                    Console.WriteLine("Отличается на 5: {0}", array[i]);
                else
                    continue;
                //Console.WriteLine("Количество элементов: {0}", );
            }
            Console.WriteLine("Введенные данные:");
            for (int i = 0; i < arraySize; i++)
                Console.Write("{0} ", array[i]);

        }
        static void FindBeforeMaximumValueSum()
        {
            Console.WriteLine("Введите размер массива:");
            int arraySize = Int32.Parse(Console.ReadLine());
            int[] array = new int[arraySize];
            int max = Int32.MinValue;
            int sum = 0;
            for (int i = 0; i < arraySize; i++)
            {
                Console.WriteLine("Введите элемент массива:");
                array[i] = Int32.Parse(Console.ReadLine());
                if (array[i] > max)
                    max = array[i];
            }
            int maxPosition = Array.IndexOf(array, max);
            for (int i = 0; i < maxPosition; i++)
            {
                sum += array[i];
            }
            Console.WriteLine("Значение максимального элемента массива: {0}, сумма элементов до него: {1}", max, sum);
        }
        static void FindPositionAndValueOfLastNegativeElement ()
        {
            Console.WriteLine("Необходимо ввести значения для 8ми размерного массива.");
            int[] array = new int[8];
            int lastMin = Int32.MaxValue;
            for (int i = 0; i < 8; i++)
            {
                Console.WriteLine("Введите элемент массива: {0}", i + 1);
                array[i] = Int32.Parse(Console.ReadLine());
            }
            Array.Reverse(array);
            for (int i = 0; i < 8; i++)
            {
                if (array[i] < 0)
                {
                    lastMin = array[i];
                    break;
                }
                else
                    Console.WriteLine("Среди введённых Вами значений нет отрицательных. Пожалуйста, повторите ввод.");
            }
            Array.Reverse(array);
            int lastMinPosition = Array.IndexOf(array, lastMin) + 1;
            Console.WriteLine("{0}, {1}", lastMin, lastMinPosition);

        }
        static void ReplaceWithAverageValueAfterMax ()
        {
            Console.WriteLine("Введите размер массива:");
            int arraySize = Int32.Parse(Console.ReadLine());
            int[] array = new int[arraySize];
            int max = Int32.MinValue;
            int sum = 0;
            for (int i = 0; i < arraySize; i++)
            {
                Console.WriteLine("Введите элемент массива:");
                array[i] = Int32.Parse(Console.ReadLine());
                if (array[i] > max)
                    max = array[i];
            }
            int maxPosition = Array.IndexOf(array, max);
            for (int i = 0; i <= maxPosition; i++)
            {
                sum += array[i];
            }
            int averageValue = sum / (maxPosition + 1);
            for (int i = 0; i < arraySize; i++)
            {
                int temp = Array.IndexOf(array, i);
                if (temp > maxPosition)
                    array[i] = averageValue;
            }
            PrintArrayToConsole(array);
        }
        static void PrintArrayToConsole(int [] arrayForPrint)
        {
            for (int i = 0; i < arrayForPrint.GetLength(0); i++)
            {
                Console.Write("{0}\t", arrayForPrint[i]);
            }
        }
    }
}
